#include <iostream>
#include <string>
#include <regex>

// int main()
// {
//     std::string s = "number666888";
//     std::regex e("number(\\d+)");
//     std::smatch matchs;

//     bool ret = std::regex_match(s, matchs, e);
//     if(ret == false)
//     {
//         std::cout << "no matchs" << std::endl;
//         return 2;
//     }

//     for(auto& it: matchs)
//     {
//         std::cout << it << std::endl;
//     }
//     return 0;
// }

// #include <iostream>
// #include <string>
// #include <regex>

// int main()
// {
//     std::string str = "/numbers/1234";
//     //匹配以 /numbers/起始，后边跟了一个或多个数字字符的字符串，并且在匹配的过程中提取这个匹配到的数字字符串
//     std::regex e("/numbers/(\\d+)");
//     std::smatch matches;

//     bool ret = std::regex_match(str, matches, e);
//     // if (ret == false) {
//     //     return -1;
//     // }
//     // for (auto &s : matches) {
//     //     std::cout << s << std::endl;
//     // }
//     return 0;
// }

int main()
{
    std::string str = "GET /bitejiuyeke/login?usrname=gtm&password=123456 HTTP/1.1";
    std::smatch matches;
    std::regex e("(GET|POST|DELETE|PUT|HEAD) ([^?]*)(?:\\?(.*))? (HTTP/1\\.[01])(?:\n|\r\n)?");

    bool ret = std::regex_match(str, matches, e);
    if(ret == false)
    {
        std::cout << "regex no match" << std::endl;
        exit(2);
    }

    for(auto& it: matches)
    {
        std::cout << it << std::endl;
    }
    return 0;
}
